package com.landsend;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;

import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.Tag;
import org.htmlparser.filters.AndFilter;
import org.htmlparser.filters.HasAttributeFilter;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;

import com.dao.DBUtil;
import com.dao.DealBean;
import com.util.CategoryMapping;

public class LandSendHtmlParser {
	
	public  void parserLandsend(String url) throws Exception{
		
		DealBean landsendBean = new DealBean();
		
		landsendBean.setBuy_url(url);
		
		String endsTime = "";
        
		landsendBean.setEnds_time(endsTime);
        
        String souceSite = "LandSend";
        
        landsendBean.setSouce_site(souceSite);
        
        String brand = "";
  	
        landsendBean.setBrand(brand);
		
		Parser parser;
		
		try {
			
			parser = new Parser(url);
			
			parser.setEncoding("UTF-8");
		
		    NodeFilter productDetailFilter = new AndFilter(new TagNameFilter("div"),new HasAttributeFilter("class", "pp-product-info"));
         
            NodeList productDetailList = parser.extractAllNodesThatMatch(productDetailFilter); 
         
            if (productDetailList != null && productDetailList.size() > 0) { 
         	
         	Parser productDetailparser = new Parser(productDetailList.toHtml());
         	
         	NodeFilter spanFilter = new TagNameFilter("span");
         	
         	NodeList list = productDetailparser.extractAllNodesThatMatch(spanFilter);
         	
         	   if(list != null && list.size() > 0){
         		
         		Tag skuIdNodeTag = (Tag)list.elementAt(0);
         		
         		String skuIdNode = skuIdNodeTag.getAttribute("id");
         		
         		String[] skuId = skuIdNode.split("_");
         		
         		landsendBean.setSku_id(skuId[1]);
         		
         		Node modelIdNode = list.elementAt(0);
         			
         		String modelId = modelIdNode.toPlainTextString().trim();
         			
         		landsendBean.setModel_id(modelId);
         		
         		if(list.elementAt(1)!= null){
         			
         			Node originalPriceNode = list.elementAt(1);
         			
             		String originalPrice = originalPriceNode.toPlainTextString().trim();
             			
             		landsendBean.setOriginal_price(originalPrice);
         			
         		}
         		
                 if(list.elementAt(2)!= null){
         			
         			Node salePriceNode = list.elementAt(2);
         			
             		String salePriceString = salePriceNode.toPlainTextString().trim();
             		
             		String[] salePrice = salePriceString.split(" ");
             			
             		landsendBean.setSale_price(salePrice[1]);
         			
         		}
         			
         	   }
            }
            
            parser.reset();
            
            NodeFilter productNameNodeFilter = new AndFilter(new TagNameFilter("h1"),new HasAttributeFilter("class", "pp-product-name"));;
            
            NodeList productNameNodeList = parser.extractAllNodesThatMatch(productNameNodeFilter);
             
              if (productNameNodeList != null && productNameNodeList.size() > 0) {  

                  Node productNameNode = productNameNodeList.elementAt(0);  

                  String productName = productNameNode.toPlainTextString().trim();  

                  landsendBean.setProduct_name(productName);

              }



//            parser.reset();
//            
//            NodeFilter imageUrlFilter = new AndFilter(new TagNameFilter("div"),new HasAttributeFilter("id", "pp-product-name"));
//
//            NodeList imageUrlList = parser.extractAllNodesThatMatch(imageUrlFilter);
//            
//            if (imageUrlList != null && imageUrlList.size() > 0) { 
//            	
//            	Parser imageparser = new Parser(imageUrlList.toHtml());
//            	
//            	NodeFilter imageUrlNodeFilter = new TagNameFilter("a");
//            	
//            	NodeList imageUrlNodeList = imageparser.extractAllNodesThatMatch(imageUrlNodeFilter);
//            	
//            	if (imageUrlList != null && imageUrlList.size() > 0) { 
//
//                Tag imageUrlNode = (Tag)imageUrlNodeList.elementAt(0);
//                
//                String imageUrl = imageUrlNode.getAttribute("href");
//                
//                modniqueBean.setImage_url(imageUrl); 
//
//                saveFile(imageUrl, skuId);
//            }
//            }
//           
//              parser.reset();
//              
//              NodeFilter categoryFilter = new AndFilter(new TagNameFilter("div"),new HasAttributeFilter("id", "tab1"));
//	            
//	            NodeList categoryList = parser.extractAllNodesThatMatch(categoryFilter);
//	             
//	              if (categoryList != null && categoryList.size() > 0) { 
//	            	  
//	            	  Parser categoryNodeParser = new Parser(categoryList.toHtml());
//	            	  
//	            	  NodeFilter categoryNodeFilter = new TagNameFilter("p");
//	            	  
//	            	  NodeList categoryNodeList = categoryNodeParser.extractAllNodesThatMatch(categoryNodeFilter);
//
//                     if(categoryNodeList != null && categoryNodeList.size() > 0){
//                    	 
//                  	   for(Node categoryNode : categoryNodeList.toNodeArray()){
//                  		   
//                  		   String categoryNodeContent = categoryNode.toPlainTextString().trim();
//                  		   
//                  		   if (categoryNodeContent.contains("Gender:")){
//                  			   
//                  			   String[] list = categoryNodeContent.split(":");
//                  			   
//                  			   String category = CategoryMapping.getType1(list[1]);
//                  			   
//                  			 modniqueBean.setCategory1(category);
//                  			   
//                                  }
//                  	   }
//                     }
//
//	              } 
//	              
//	              parser.reset();
//	              
//	              NodeFilter itemFilter = new AndFilter(new TagNameFilter("div"),new HasAttributeFilter("id", "tab1"));
//		            
//		            NodeList itemList = parser.extractAllNodesThatMatch(itemFilter);
//		             
//		              if (itemList != null && itemList.size() > 0) { 
//		            	  
//		            	  Parser itemNodeParser = new Parser(itemList.toHtml());
//		            	  
//		            	  NodeFilter itemNodeFilter = new TagNameFilter("p");
//		            	  
//		            	  NodeList itemNodeList = itemNodeParser.extractAllNodesThatMatch(itemNodeFilter);
//
//	                     if(itemNodeList != null && itemNodeList.size() > 0){
//	                    	 
//	                  	   for(Node itemNode : itemNodeList.toNodeArray()){
//	                  		   
//	                  		   String itemNodeContent = itemNode.toPlainTextString().trim();
//	                  		   
//	                  		   if (itemNodeContent.contains("Item Type:")){
//	                  			   
//	                  			   String[] list = itemNodeContent.split(":");
//	                  			   
//	                  			   String item = CategoryMapping.getType2(list[1]);
//	                  			   
//	                  			   modniqueBean.setCategory2(item);
//	                  			   
//	                                  }
//	                  	   }
//	                     }
//
//		              }
//              
//	              parser.reset();
//	              
//	              NodeFilter productDescriptionFilter = new AndFilter(new TagNameFilter("div"),new HasAttributeFilter("id", "tab1"));
//		            
//		            NodeList productDescriptionList = parser.extractAllNodesThatMatch(productDescriptionFilter);
//		             
//		              if (productDescriptionList != null && productDescriptionList.size() > 0) { 
//		            	
//		            	    Node productDescriptionNode = productDescriptionList.elementAt(0);
//		                	
//		                	String productDescription = productDescriptionNode.toPlainTextString().trim();
//		                	
//		                	modniqueBean.setProduct_description(productDescription);
//
//		              } 
//			 
		} catch (ParserException e) {
			
			e.printStackTrace();
		}  
//        
//		 DBUtil db = new DBUtil();
//         
//         if(modniqueBean.getSku_id()!=null){
//         
//         db.save(modniqueBean);
//         
//         }
		
	}
	
	 private static void saveFile(String imgString, String productId) throws Exception {
		  	URL url;
		  	File outFile;
		  	OutputStream os = null;
		  	InputStream is = null;
				try {
					url = new URL(imgString);
					outFile = new File("C:/nordstrom/img/"+productId+".jpg");
					os = new FileOutputStream(outFile);
					is = url.openStream();
				} catch (MalformedURLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				byte[] buff = new byte[1024];
				while(true) {
					int readed = is.read(buff);
					if(readed == -1) {
						break;
					}
					byte[] temp = new byte[readed];
					System.arraycopy(buff, 0, temp, 0, readed);
					os.write(temp);
				}
				is.close(); 
		      os.close();
			}

}
